perm filename COLOUR.PL[S85,JMC] blob sn#789545 filedate 1985-04-08 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	map(    [country(a,A,[B,C,D]),
C00004 ENDMK
C⊗;
map(    [country(a,A,[B,C,D]),
         country(b,B,[A,C,E]),
         country(c,C,[A,B,D,E,F]),
         country(d,D,[A,B,F]),
         country(e,E,[B,C,F]),
         country(f,F,[C,D,E])
        ]
).

colour←map([Country|Map],Colours) :-
        colour←country(Country,Colours),
        colour←map(Map,Colours).
colour←map([],←Colours).

colour←country(country(←Name,C,AdjacentCs),Colours) :-
        remove(C,Colours,Colours1),
        subset(AdjacentCs,Colours1).

subset([C|Cs],Colours) :-
        remove(C,Colours,←),
        subset(Cs,Colours).
subset([],←Colours).

remove(C,[C|Cs],Cs).
remove(C,[C1|Cs],[C1|Cs1]) :-
        remove(C,Cs,Cs1).

test(Map) :-
        map(Map),
        colours(Colours),
        colour←map(Map,Colours).

colours([red,green,blue,white]).